import request from '@/utils/request'

/**
 * 获取学生所有成绩
 * @param {String} stuId - 学生学号
 * @returns {Promise} - 请求结果
 */
export function getStudentScores(stuId) {
	return request({
		url: `/student/scores`,
		method: 'get',
	})
}

/**
 * 获取学生最近的成绩记录（用于个人中心展示）
 * @param {String} stuId - 学生学号
 * @param {Number} limit - 限制返回数量
 * @returns {Promise} - 请求结果
 */
export function getRecentScores(stuId, limit = 5) {
	return request({
		url: `/student/scores/recent`,
		method: 'get',
		params: {
			stuId,
			limit,
		},
	})
}

/**
 * 获取所有成绩（管理员使用）
 * @returns {Promise} - 请求结果
 */
export function getAllScores() {
	return request({
		url: '/admin/scores',
		method: 'get',
	})
}

/**
 * 获取成绩列表
 * @param {Object} params 查询参数
 * @returns {Promise} 成绩列表数据
 */
export function getScoreList(params) {
	return request({
		url: '/admin/score/list',
		method: 'get',
		params,
	})
}

/**
 * 获取成绩总数
 * @returns {Promise} 成绩总数
 */
export function countScores() {
	return request({
		url: '/admin/score/count',
		method: 'get',
	})
}

/**
 * 添加成绩
 * @param {Object} data 成绩数据
 * @returns {Promise} 添加结果
 */
export function addScore(data) {
	return request({
		url: '/admin/scores',
		method: 'post',
		data,
	})
}

/**
 * 更新成绩
 * @param {Object} data 成绩数据
 * @returns {Promise} 更新结果
 */
export function updateScore(data) {
	return request({
		url: `/admin/scores/${data.id}`,
		method: 'put',
		data,
	})
}

/**
 * 删除成绩
 * @param {Number} id 成绩ID
 * @returns {Promise} 删除结果
 */
export function deleteScore(id) {
	return request({
		url: `/admin/scores/${id}`,
		method: 'delete',
	})
}

/**
 * 批量导入成绩
 * @param {FormData} formData 包含成绩数据表格的表单数据
 * @returns {Promise} 导入结果
 */
export function importScores(formData) {
	return request({
		url: '/admin/score/import',
		method: 'post',
		data: formData,
		headers: {
			'Content-Type': 'multipart/form-data',
		},
	})
}

/**
 * 导出成绩数据
 * @param {Object} params 查询参数
 * @returns {Promise} 下载链接
 */
export function exportScores(params) {
	return request({
		url: '/admin/score/export',
		method: 'get',
		params,
		responseType: 'blob',
	})
}

/**
 * 获取成绩统计数据（合格率等）
 * @returns {Promise} - 请求结果
 */
export function getScoreStatistics() {
	return request({
		url: '/admin/scores/statistics',
		method: 'get',
	})
}

/**
 * 根据ID获取成绩详情
 */
export function getScoreById(id) {
	return request({
		url: `/scores/${id}`,
		method: 'get',
	})
}

/**
 * 根据学生ID获取成绩（管理员）
 */
export function getScoresByStudentId(stuId) {
	return request({
		url: `/admin/scores/student/${stuId}`,
		method: 'get',
	})
}

/**
 * 根据项目ID获取成绩
 */
export function getScoresByItemId(itemId) {
	return request({
		url: `/scores/item/${itemId}`,
		method: 'get',
	})
}

/**
 * 获取合格率统计（管理员）
 */
export function getPassRateByGender() {
	return request({
		url: '/admin/scores/pass-rate',
		method: 'get',
	})
}

/**
 * 获取项目成绩分布（管理员）
 */
export function getScoreDistribution(itemId) {
	return request({
		url: `/admin/scores/distribution/${itemId}`,
		method: 'get',
	})
}

/**
 * 删除学生所有成绩（管理员）
 */
export function deleteScoresByStudent(stuId) {
	return request({
		url: `/admin/scores/student/${stuId}`,
		method: 'delete',
	})
}

/**
 * 检查学生是否有成绩记录
 * @param {String} stuId 学生学号
 * @returns {Promise} 请求结果，返回true表示有成绩记录，false表示没有
 */
export function checkStudentHasScores(stuId) {
	return request({
		url: `/admin/scores/check/${stuId}`,
		method: 'get',
	})
}
